/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.stefanini.resultmundial2014.controladores;

import com.stefanini.mundial2014capadatos.Equipo;
import com.stefanini.mundial2014capadatos.Grupo;
import com.stefanini.resultmundial2014.ejb.EquipoManager;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Named;

/**
 *
 * @author CAMALEON
 */
@Named (value="equipoAdminController")
@SessionScoped
public class EquipoAdminController implements Serializable{
    private static final long serialVersionUID = 1L;
    
    /*Variable objeto (Equipo)*/
    private Equipo equipo;
    private Grupo grupo;
    
    /*Variables*/
    private List<Equipo> equipos;
    private List<Grupo> grupos;
    private boolean realizarConsulta = true;
    private boolean realizarConsultag = true;
    private boolean isEdit = false;
    
    @EJB
    private EquipoManager equipoManager;

   
    /******************************************************************************/
   /*******Implementacion de metodos*******/
    
    /*Metodo que crea el objeto Equipo*/
    public void creequipo(){
        setEquipo(equipo);
        setGrupo(grupo);
        isEdit = false;
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("/ResultMundial2014/pages/equipo/equipoEdit.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(EquipoAdminController.class.getName()).log(Level.SEVERE,
                    "Error de redireccionamiento - EquipoAdminController", ex);
        }
    }
    
    /*Metodo que inicializa la instancia del objeto tipo Equipo*/
    public void initEdit(Equipo equipoEdit){
        this.setEquipo(equipoEdit);
        
        isEdit = true;
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("/ResultMundial2014/pages/equipo/equipoEdit.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(LoginController.class.getName()).log(Level.SEVERE, "Error de redireccionamiento - EquipoAdminController", ex);
        }
    }
    
    /*Metodo que consulta los equipos*/
    public void consultaEquipo(){
        if(realizarConsulta){
            setEquipos(equipoManager.getAllEquipos());
            realizarConsulta = false;
        }
    }
    
    /*Metodo que consulta los grupos*/
    public void consultaGrupo(){
        if(realizarConsultag){
            setGrupos(equipoManager.getAllGrupos());
            realizarConsultag = false;
        }
    }
    
    /*Metodo que llama al metodo que elimina el item Equipo*/
    public void eliminarEquipo (Equipo equipo){
        FacesContext ctx = FacesContext.getCurrentInstance();
        
        if (equipoManager.elinimaEquipo(equipo)){
            ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Info",
                    "Equipo Eliminado Exitosamente"));
            realizarConsulta = true;
            consultaEquipo();
        } else {
            ctx.addMessage(null,new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Error", "Error al eliminar el grupo"));
        }
    }
    
    /*Metodo que envía al manager el equipo a guardar*/
    public void guardarEquipo(){
        FacesContext ctx = FacesContext.getCurrentInstance();
        if(equipoManager.verificaEquipoExistente(equipo.getNombre())){
            ctx.addMessage(null,new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", "YA existe un equipo con el nombre enviado"));
        }else{
            // Aqui se debe enviar los datos a guardar por el metodo que guardara el equipo
        }
    }
    
    /******************************************************************************/ 
    /******* METODOS ACCESORES*******/
    
    /* Objeto equipo*/
    public Equipo getEquipo() {
        return equipo;
    }
    public void setEquipo(Equipo equipo) {
        this.equipo = equipo;
    }
    
    /*Lista equipos*/
    public List<Equipo> getEquipos() {
        return equipos;
    }
    public void setEquipos(List<Equipo> equipos) {
        this.equipos = equipos;
    }

    /*Objeto lista grupo*/
    public List<Grupo> getGrupos() {
        return grupos;
    }

    public void setGrupos(List<Grupo> grupos) {
        this.grupos = grupos;
    }

    /*Objeto Entidad Grupo*/
    public Grupo getGrupo() {
        return grupo;
    }

    public void setGrupo(Grupo grupo) {
        this.grupo = grupo;
    }
}
